package com.bishe.app.core.utils;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Created at 2021-09-27
 * <p>
 * 标识该方法会先获取锁
 *
 * @author jeffrey.hu
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Lock {

    /**
     * 业务类型
     *
     * @return
     */
    String lockPrefix();

    /**
     * key springEL
     *
     * @return
     */
    String key();

    /**
     * lock second
     * @return
     */
    int lockSecond() default 3;


    /**
     * 是否需要使用EL表达式解析出key的实际内容
     */
    boolean needParseEl() default false;
}
